package com.example.service;

import com.example.common.PageResult;
import com.example.common.Result;
import com.example.dto.AdminInventoryQueryDTO;
import com.example.vo.AdminInventoryRecordVO;

import java.util.List;

/**
 * 管理员库存管理Service接口
 */
public interface AdminInventoryService {

    /**
     * 分页查询管理员库存记录
     */
    Result<PageResult<AdminInventoryRecordVO>> getRecordsPage(AdminInventoryQueryDTO queryDTO);

    /**
     * 根据商品ID查询库存记录
     */
    Result<List<AdminInventoryRecordVO>> getRecordsByProductId(Long productId);

    /**
     * 查询入库记录（新增商品）
     */
    Result<PageResult<AdminInventoryRecordVO>> getInRecordsPage(AdminInventoryQueryDTO queryDTO);

    /**
     * 查询出库记录（分配给商家）
     */
    Result<PageResult<AdminInventoryRecordVO>> getOutRecordsPage(AdminInventoryQueryDTO queryDTO);

    /**
     * 创建商品入库记录
     * 当管理员新增商品时调用
     */
    Result<Void> createProductInRecord(Long productId, Integer quantity, String remark);

    /**
     * 创建商品分配出库记录
     * 当管理员分配商品给商家时调用
     */
    Result<Void> createAllocateOutRecord(Long productId, Long targetMerchantId, Integer quantity, String remark);

    /**
     * 库存调整记录
     * 当管理员调整库存时调用
     */
    Result<Void> createAdjustRecord(Long productId, Integer quantity, String recordType, String remark);

    /**
     * 导出库存记录
     */
    Result<List<AdminInventoryRecordVO>> exportRecords(AdminInventoryQueryDTO queryDTO);

    /**
     * 获取库存统计信息
     */
    Result<Object> getInventoryStatistics(String startTime, String endTime);
} 